import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

import util.CommandLineParser;
import analyzers.AnalyzerException;
import analyzers.TweetClassifier;

public class CommandLine {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		String instancia = null;
		if (args.length < 1) {
			System.out
					.println("Digite o tipo da instancia do classificador (classe=net|naive|j48): ");
			instancia = bf.readLine();
		} else {
			instancia = args[0];
			if (args.length > 1) {
				bf = new BufferedReader(new InputStreamReader(
						new FileInputStream(args[1]), "UTF-8"));
			}
		}

		TweetClassifier classificador = null;
		
		try {
			classificador = CommandLineParser.getClassificadorFromCommand(instancia);
			
			System.out.println("==== Carregando classificador ====");
			classificador.load();
			System.out.println("==== Fim do carregamento ====");
		} catch (AnalyzerException e1) {
			System.err.println("Erro ao treinar classificador: " + e1.getMessage());
			System.exit(1);
		}

		System.out
				.println("==== Bem-vindo ao analisador de sentimentos do Twitter! ===");
		System.out.println("==== Digite um tweet para se analisado. "
				+ "Digite uma linha apenas com '.' para sair.");

		while (true) {
			System.out.print("O tweet a ser analisado: ");
			String linha = bf.readLine();
			if (linha == null || linha.trim().equals(".")) {
				break;
			}
			String classe = "desconhecido";
			try {
				classe = classificador.classify(linha.toLowerCase());
			} catch (AnalyzerException e) {
				System.err.println(e.getMessage());
			}
			classe = classe.toUpperCase();
			System.out.println("O tweet: '" + linha
					+ "' foi classificado como um tweet do tipo " + classe);
		}

		PrintStream output = new PrintStream(new File("output.txt"));
		output.append(classificador.toString());
		output.flush();
		output.close();
	}
}
